<?php
/* 
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

/**
 * Description of Segurancaclass
 *
 * @author alan
 */
class Seguranca {
    protected $modulo;
    protected $acao;
    protected $idUsuario;
    /**
     * Constroi a estrutura para verificação da permissão do usuário à uma determinada ação.
     * @global <Conexao> $cnxIntra Conexão com o banco de dados.
     * @param <string> $modulo Nome da aplicação que o usuário irá acessar.
     */
    public function __construct($modulo){
        //echo "<h1>Modulo: $modulo</h1>";
        global $cnxIntra;
        $consulta = new Consulta($cnxIntra, "SELECT * FROM modulo WHERE nome = '{$modulo}'");
        $linhas     = $consulta->getResultados();
        $this->modulo = $linhas[0]['idAplicacao'];
        $this->idUsuario = Autenticacao::capturarIdUsuarioLogado();
    }
    /**
     * Verifica se a ação que o usuário está tentando acessar, é permitida para o mesmo.
     * @global <Conexao> $cnxIntra Conexão com o banco de dados.
     * @param <string/int> $acao Nome da ação ou Id da ação que o usuário está tentando acessar.
     * @return <boolean> FALSE caso o usuário não possua permissão para acesso e TRUE para caso dele possuir acesso a mesma.
     */
    public function getPermissao($acao=0){
        return true;
        $permissao = false;
        global $cnxIntra;
        if(!is_int($acao)){
            $sql = "SELECT * FROM acao WHERE nome = '{$acao}' AND modulo_idAplicacao = {$this->modulo}";
            $cst = new Consulta($cnxIntra, $sql);
            $linhas     = $cst->getResultados();
            // descubro o id da acao
            $idAcao = isset($linhas[0]['idAcao'])?$linhas[0]['idAcao']:0;
        }
        else{
            $idAcao = $acao;
        }        
        // Verifico se o usuario tem permissao de usuario
        $sql = "SELECT * FROM acao_usuario WHERE usuario_pessoa_idPessoa = {$this->idUsuario} AND acao_idAcao= {$idAcao}";
        $consulta = new Consulta($cnxIntra, $sql);
        //echo "<h1>Linhas usuario:{$consulta->getQtdeLinhas()}</h1>";
        if($consulta->getQtdeLinhas()>0){
            $permissao = true;
        } else {
            // Verifico a que grupos o usuario pertence
            $sql = "SELECT grupo_idGrupo FROM usuario_grupo WHERE usuario_pessoa_idPessoa = {$this->idUsuario}";
            $consulta = new Consulta($cnxIntra, $sql);
            //echo "<h1>Linhas usuario_grupo:{$consulta->getQtdeLinhas()}</h1>";
            if($consulta->getQtdeLinhas()>0){
                $resultados = $consulta->getResultados();
                $grupo = array();
                foreach($resultados as $linha){
                    $grupo[] = $linha['grupo_idGrupo'];
                }
                $grps = implode(',', $grupo);
                $sql = "SELECT * FROM acao_grupo WHERE grupo_idGrupo IN ($grps) AND acao_idAcao= {$idAcao}";
                $consulta = new Consulta($cnxIntra, $sql);
                //echo "<h1>Linhas acao_grupo:{$consulta->getQtdeLinhas()}</h1>";
                if($consulta->getQtdeLinhas()>0){
                    $permissao = true;
                }
            }
        }
        return $permissao;
    }
}
/*
include_once('../config.php');
$a = new Seguranca('Gaveta');
$b = $a->getPermissao('salvar');
if($b){
  echo "permitido";
} else {
    echo "Sai fora vagabundo";
}
*/
?>
